package cn.cyh.queue_service.mapper;

import cn.cyh.queue_service.model.entity.Window;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 窗口Mapper接口
 */
@Mapper
public interface WindowMapper extends BaseMapper<Window> {
    
    /**
     * 根据业务类型ID查询可用窗口
     * 
     * @param serviceTypeId 业务类型ID
     * @return 窗口列表
     */
    @Select("SELECT * FROM biz_window WHERE service_type_id = #{serviceTypeId} AND status = 'OPEN'")
    List<Window> selectOpenWindowsByServiceType(@Param("serviceTypeId") Long serviceTypeId);
    
    /**
     * 更新窗口当前处理的号码
     * 
     * @param windowId 窗口ID
     * @param ticketNumber 票号
     * @return 更新影响行数
     */
    @Update("UPDATE biz_window SET current_number = #{ticketNumber} WHERE id = #{windowId}")
    int updateCurrentNumber(@Param("windowId") Long windowId, @Param("ticketNumber") String ticketNumber);
    
    /**
     * 更新窗口状态
     * 
     * @param windowId 窗口ID
     * @param status 状态
     * @return 更新影响行数
     */
    @Update("UPDATE biz_window SET status = #{status} WHERE id = #{windowId}")
    int updateStatus(@Param("windowId") Long windowId, @Param("status") String status);
    
    /**
     * 更新窗口等待人数
     * 
     * @param windowId 窗口ID
     * @param waitingCount 等待人数
     * @return 更新影响行数
     */
    @Update("UPDATE biz_window SET waiting_count = #{waitingCount} WHERE id = #{windowId}")
    int updateWaitingCount(@Param("windowId") Long windowId, @Param("waitingCount") Integer waitingCount);
}